package com.kc.business.service;

import com.kc.business.domain.dto.BizOrderCompareStatisticsDTO;
import com.kc.business.domain.order.entity.BizOrderStatistics;
import com.kc.business.domain.query.BizOrderStatisticsQuery;

import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * service
 */
public interface BizOrderStatisticsService {
    /**
     * 获取数据列表
     * @param bizOrderStatisticsQuery
     * @return
     */
    List<BizOrderStatistics> getList(BizOrderStatisticsQuery bizOrderStatisticsQuery);
    /**
     * 按照日期获取同环比数据
     * @param bizOrderStatisticsList
     * @param bizOrderStatisticsQuery
     * @return
     */
    List<BizOrderCompareStatisticsDTO> getCompareDataByDate(List<BizOrderStatistics> bizOrderStatisticsList, BizOrderStatisticsQuery bizOrderStatisticsQuery,String attributeName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;

    /**
     * 按照月份获取数据
     * @param bizOrderStatisticsQuery
     * @return
     */
    List<BizOrderStatistics> getListByMonth(BizOrderStatisticsQuery bizOrderStatisticsQuery);

    /**
     * 卡戳平台退款订单统计
     * @param bizOrderStatisticsQuery
     * @return
     */
    List<BizOrderStatistics> getKcRefundStatistics(BizOrderStatisticsQuery bizOrderStatisticsQuery);

    /**
     * 退款数据，同比环比处理
     * @param bizOrderStatisticsList
     * @param bizOrderStatisticsQuery
     * @param orderUserNum
     * @return
     */
    List<BizOrderCompareStatisticsDTO> getRefundCompareData(List<BizOrderStatistics> bizOrderStatisticsList, BizOrderStatisticsQuery bizOrderStatisticsQuery, String orderUserNum) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;

    /**
     * 按照季度统计数据
     * @param bizOrderStatisticsQuery
     * @return
     */
    List<BizOrderStatistics> getListByQuarter(BizOrderStatisticsQuery bizOrderStatisticsQuery);

    BizOrderStatistics getHistoryData(String currDate,Integer platformId,Integer platformType,Integer dateType,BizOrderStatisticsQuery bizOrderStatisticsQuery);

    BizOrderStatistics getCurrData(String currDate,Integer platformId,Integer platformType,Integer dateType);
}
